package com.zyf.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zyf.model.user.UserInfo;
import com.zyf.vo.user.LoginVo;
import com.zyf.vo.user.UserAuthVo;
import com.zyf.vo.user.UserInfoQueryVo;

import java.util.Map;

/** 用户的业务层接口
 * @author zyf
 * @date 2021年05月18日 11:28
 */
public interface UserinfoService extends IService<UserInfo> {
    /**
     * 用户手机号登录
     * @author zyf
     * @date 2021/5/18 11:48
     * @param loginVo  用户登录VO类
     * @return java.util.Map<java.lang.String,java.lang.Object>
     */
    Map<String, Object> loginUser(LoginVo loginVo);

    /**
     * 判断数据库中是否存在微信扫描人的信息， 根据openid判断
     * @author zyf
     * @date 2021/5/19 17:58
     * @param openid  openid
     * @return com.zyf.model.user.UserInfo
     */
    UserInfo selectWxInfoOpenid(String openid);

    /**
     * 用户认证Api
     * @author zyf
     * @date 2021/5/25 20:35
     * @param userId 用户id
     * @param userAuthVo 用户认证数据vo对象
     */
    void userAuth(Long userId, UserAuthVo userAuthVo);

    /**
     * 分页条件查询用户信息Api
     * @author zyf
     * @date 2021/5/28 14:38
     * @param pageParam 分页参数
     * @param userInfoQueryVo 条件查询参数
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.zyf.model.user.UserInfo>
     */
    IPage<UserInfo> selectUserByPage(Page<UserInfo> pageParam, UserInfoQueryVo userInfoQueryVo);

    /**
     * 用户锁定
     * @author zyf
     * @date 2021/5/28 15:42
     * @param userId 用户id
     * @param status 用户状态
     */
    void lockUser(Long userId, Integer status);

    /**
     * 用户详情
     * @author zyf
     * @date 2021/5/28 16:17
     * @param userId 用户id
     * @return java.util.Map<java.lang.String,java.lang.Object>
     */
    Map<String, Object> showUser(Long userId);

    /**
     * 认证审批
     * @author zyf
     * @date 2021/5/28 17:53
     * @param userId 用户id
     * @param authStatus 用户认证状态
     */
    void approval(Long userId, Integer authStatus);

    /**
     * 手机号重新绑定微信
     * @author zyf
     * @date 2021/6/5 14:42
     * @param loginVo
     * @return java.util.Map<java.lang.String,java.lang.Object>
     */
    Map<String, Object> rebinding(LoginVo loginVo);

    /**
     * 删除过期用户
     * @author zyf
     * @date 2021/6/5 15:08
     * @param loginVo
     * @return java.util.Map<java.lang.String,java.lang.Object>
     */
    void deleteUserFile(LoginVo loginVo);
}
